package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;

import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicEstatistica;
import br.com.vti.sisp_sicrim.antigo.model.SicOperacao;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sislac01;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Sisst001 OBJETIVO : PESQUISAR TABELA *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

public class FuncoesGerais {

	SicTabelas vwTabele = new SicTabelas();
	Sislac01 sislac01 = new Sislac01();
	SicOperacao vwDveope = new SicOperacao();
	SicEstatistica vwCadest = new SicEstatistica();
	SicCadastro criminalView = new SicCadastro();

	public String camret = "";
	public String msgret = "";
	public String subniv = "";
	public int err;
	public int posicao;
	public int dv1;
	public int dv2;
	public int[][] mes = new int[7][8];
	public String dataL; // Par�metros

	public int getchr(String getarea, int len, int rTid) {
		String ppg = "";
		String pparm = "";
		int retcode = 0;
		len = 148;
		// PENDENCIA
		// CHAMA UM PROGRAMA COBOL GETCHR
		// getchr(retcode, getarea, len, rTid);
		len = 68;
		switch (UtilBean.subStr(getarea, 56, 8)) {
		case "L68A": {
			ppg = "NATDES";
			// PENDENCIA
			// CHAMA UM PROGRAMA COBOL FETCH
			// fetch(ppg, pparm, len);
			break;
		}
		// PPARM:='STACK=(LOGON SISP;SISPM001),PRINTER=(P69C,P69E),AUTO=ON'
		default: {
			break;
		}
		}
		return retcode;
	}

	public void idcsa001(String[][] totded) throws Exception {
		// String[][] totded = new String[6][3];
		String dedo = "";
		int test = 0;
		int t2 = 0;
		int t3 = 0;
		int i = 0;
		int j = 0;
		int al = 7;
		int t955 = 0;
		for (i = 1; i <= 2; i++) {
			for (j = 1; j <= 5; j++) {

				dedo = totded[j][i];
				al += 1;
				if (!(UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("0") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("Y") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).trim().equals("") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("1") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("2") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("3") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("4") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("5") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("6") || UtilBean.subStr(dedo, 0 + 1 - 1, 1).equals("7")))

				{
					camret = "al";
					msgret = "CLASSIFICACAO PRIMARIA INVALIDA";
					return;
				}
				switch (UtilBean.subStr(dedo, 0 + 1 - 1, 1)) {
				case "Y":
				case "1":
				case "2":
				case "3":
				case "4":
				case "5":
				case "6":
				case "7": {
					if (!UtilBean.subStr(dedo, 0, 6).equals("      ")) {
						camret = "al";
						msgret = "NAO SE CLASSIFICA IMPRESSOES TEMPORARIAS";
						return;
					}
					break;
				}
				case "0": {
					if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 2 - 1, 1), "1-9")) {
						camret = "al";
						msgret = "CLASSIFICACAO PRIMARIA INVALIDA";
						return;
					}
					if (!UtilBean.subStr(dedo, 0, 5).equals("     ")) {
						camret = "al";
						msgret = "NAO SUBCLASSIFICA ANOMALIAS";
						return;
					}
					break;
				}
				case " ": {
					if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 2 - 1, 1), "1-8")) {
						camret = "al";
						msgret = "CLASSIFICACAO PRIMARIA INVALIDA";
						return;
					}
					switch (UtilBean.subStr(dedo, 0 + 2 - 1, 1)) {
					case "1": {
						if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 3 - 1, 1), "1-9")) {
							camret = "al";
							msgret = "SUBCLASSIFICACAO MORFOLOGICA NAO PODERA SER BRANCO";
							return;
						}
						if (!UtilBean.subStr(dedo, 0, 4).equals("    ")) {
							camret = "al";
							msgret = "SUBCLASSIFICACAO DO ARCO LIMITA-SE A MORFOLOGIA";
							return;
						}
						break;
					}
					case "2":
					case "3": {
						if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 3 - 1, 1), "1-4")) {
							camret = "al";
							msgret = "SUBCLASSIFICACAO MORFOLOGICA NAO PODERA SER BRANCO";
							return;
						}
						if (UtilBean.subStr(dedo, 0 + 4 - 1, 1).trim().equals("")) {
							if (!((UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("P") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("I") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("A") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("B") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("T")) && j == 1))

							{
								camret = "al";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA (2,3)";
								return;
							} else {
								if (!UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("") && j == 1) {
									test += 1;
								}
							}
							if (!((UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("P") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("I") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("A") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("B") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("T") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("")) && j > 1)) {
								camret = "al";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA (2,3)";
								return;
							}
						} else
						// ELSE
						// IF DED (5) NE ' ' && J > 1 ADD 1 TO T2
						// END-IF
						{
							if ((!(UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("B") || UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("P") || UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("A")) && j == 1)) {
								camret = "al";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA (2,3)";
								return;
							}
							if ((!(UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("B") || UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("P") || UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("A") || UtilBean.subStr(dedo, 0 + 4 - 1, 1).trim().equals("")) && j > 1)) {
								camret = "al";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA (2,3)";
								return;
							}
							if (UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("B") && !UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("I")) {
								camret = "al";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA (2,3)";
								return;
							}
							if (UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("P") && !UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("A")) {
								camret = "al";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA (2,3)";
								return;
							}
							if (UtilBean.subStr(dedo, 0 + 4 - 1, 1).equals("A") && !UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("B")) {
								camret = "al";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA (2,3)";
								return;
							}
						}
						if (j == 1) {
							if (!UtilBean.subStr(dedo, 0 + 6 - 1, 1).trim().equals("")) {
								if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 6 - 1, 1), "1-5")) {
									camret = "al";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
								if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 7 - 1, 1), "0-9")) {
									camret = "al";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
								if (UtilBean.subStr(dedo, 0 + 6 - 1, 1).equals("5") && !UtilBean.subStr(dedo, 0 + 7 - 1, 1).equals("0")) {
									camret = "al";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
							} else {
								if (!UtilBean.subStr(dedo, 0 + 7 - 1, 1).trim().equals("") && !UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 7 - 1, 1), "1-9")) {
									camret = "al";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
							}
						} else {
							if (!UtilBean.subStr(dedo, 0 + 6 - 1, 1).trim().equals("")) {
								if (!UtilBean.subStr(dedo, 0 + 6 - 1, 1).equals("G")) {
									camret = "al";
									msgret = "ERRO DE GRUPO - POSICAO 6,7";
									return;
								}
								if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 7 - 1, 1), "1-6")) {
									camret = "al";
									msgret = "ERRO DE GRUPO - POSICAO 6,7";
									return;
								}
							}
						}
						break;
					}
					case "4": {
						if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 0 + 3 - 1, 1), "1-9")) {
							camret = "al";
							msgret = "SUBCLASSIFICACAO MORFOLOGICA NAO PODERA SER EM BRANCO";
							return;
						}
						if (!UtilBean.subStr(dedo, 0 + 4 - 1, 1).trim().equals("")) {
							camret = "al";
							msgret = "ERRO DE SUBCLASSIFICACAO DA POSICAO DO DELTA 4";
							return;
						}
						if (!(UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("C") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("D") || UtilBean.subStr(dedo, 0 + 5 - 1, 1).equals("E"))) {
							camret = "al";
							msgret = "ERRO DE SUBCLASSIFICACAO DA POSICAO DO DELTA 4";
							return;
						}
						if (!UtilBean.subStr(dedo, 0 + 6 - 1, 1).trim().equals("")) {
							camret = "al";
							msgret = "POSICAO INVALIDA - 6";
							return;
						}
						if (!UtilBean.subStr(dedo, 0 + 7 - 1, 1).trim().equals("")) {
							camret = "al";
							msgret = "POSICAO INVALIDA - 7";
							return;
						}
						break;
					}
					case "5":
					case "6":
					case "7":
					case "8": {
						if (!UtilBean.subStr(dedo, 0, 5).equals("     ")) {
							camret = "al";
							msgret = "ANOMALO/CICATRIZ/AMPUTACAO NAO POSSUEM SUBCLASSIFICACAO";
							return;
						}
						break;
					}
					default: {
						continue;
					}
					}
					break;
				}
				default: {
					continue;
				}
				}
			}
		}
		al = 7;
		dedo = totded[1][1];
		if (!UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("")) {
			t955 = 11;
		}

		dedo = totded[1][2];
		if (!UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("")) {
			t955 = 11;
		}
		for (i = 1; i <= 2; i++) {
			for (j = 2; j <= 5; j++) {

				dedo = totded[j][i];
				al += 1;
				if (!UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("") && test == 2) {
					if (!UtilBean.subStr(dedo, 0 + 2 - 1, 1).equals("4")) {
						camret = "al";
						msgret = "JA EXISTE INFORMACAO NA POSICAO 5";
						return;
					}
				}
				if (UtilBean.subStr(dedo, 0 + 2 - 1, 1).equals("4")) {
					test = 1;
					break;
				}
				if ((UtilBean.subStr(dedo, 0 + 2 - 1, 1).equals("2") || UtilBean.subStr(dedo, 0 + 2 - 1, 1).equals("3")) && UtilBean.subStr(dedo, 0 + 3 - 1, 1).equals("4")) {
					if (UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("")) {
						if (j == 1) {
							t955 += 1;
						}
					} else {
						t955 = 11;
					}
				}
				if (!UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("")) {
					t2 += 1;
				}
				if (!UtilBean.subStr(dedo, 0 + 1 - 1, 1).trim().equals("") || (UtilBean.subStr(dedo, 0 + 1 - 1, 1).trim().equals("") && UtilBean.subStr(dedo, 0 + 5 - 1, 1).trim().equals("") && !UtilBean.subStr(dedo, 0 + 2 - 1, 1).trim().equals(""))) {
					t3 += 1;
				}
			}
		}
		al = 7;
		if (t955 > 0 && t955 < 11) {
			camret = "al";
			msgret = "NAO EXISTE INFORMACAO NA POSICAO 5";
			return;
		}
		if (test == 0 && t3 != 8) {
			if (t2 > 1) {
				camret = "al";
				msgret = "EXISTE INFORMACAO A MAIS NA POSICAO 5";
				return;
			}
		}
	}

	public String sisst001(int arg1, long arg2, String ress) // xSUBROUTINE
	{
		// while (
		if (vwTabele.consultaTabele(arg1, arg2)) {
			ress = vwTabele.getDescricaoElem();
		} else {
			ress = StringUtils.repeat("#", 60);
		}
		vwTabele.fecha();
		return ress;
	}

	public void tabsatu(Sessao sessao) {

		String nvl = "";
		camret = "";
		// vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 0, 3, "N", //
		// "018");
		// vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 3, 12, "N", //
		// sessao.getSisgsisp().getMatric());
		// Par�grafo: t1()
		while (vwTabele.consultaTabele(18, (long) sessao.getSisgsisp().getMatric())) {
			if (!vwTabele.getChaveAlfaAcesso().trim().equals(sessao.getSisgsisp().getSenha().trim())) {
				camret = "senha";
				return;
			}
			sislac01.niveis = vwTabele.getDescricaoElem();
			if (sessao.getSisgsisp().getVar() != 0) {
				nvl = UtilBean.subStr(sislac01.niveis, 30 + sessao.getSisgsisp().getVar() - 1, 1);
				if (!(nvl.equals("1") || nvl.equals("3") || nvl.equals("5") || nvl.equals("7"))) {
					camret = "senha";
					return;
				}
			}
		}
		vwTabele.fecha();
		if (vwTabele.registrosProcessados() == 0) {
			camret = "matric";
			return;
		}
	}

	public String executarModulo(String classe, String classeRetorno, Result result, Sessao sessao) {
		// call the method
		boolean instanciou = false;
		if (!classe.contains(".")) {
			classe = "br.com.vti.sisp.controller.programa." + classe;
		}
		if (!classeRetorno.contains(".")) {
			classeRetorno = "br.com.vti.sisp.controller.programa." + classeRetorno;
		}
		try {
			if (sessao != null && !classeRetorno.equals("")) {
				sessao.getSisgsisp().pushNavega(classeRetorno);
			}

			Class<?> cls = Class.forName(classe.trim());
			Constructor<?>[] constructors = cls.getConstructors();
			Object obj = null;
			for (Constructor<?> cons : constructors) {
				Class<?>[] parameterTypes = cons.getParameterTypes();

				if (parameterTypes.length == 2 && parameterTypes[0].toString().contains("br.com.caelum.vraptor.Result") && parameterTypes[1].toString().contains("br.com.vti.sisp.util.Sessao")) {

					Constructor<?> construtor = cls.getConstructor(parameterTypes);
					obj = (Object) construtor.newInstance(result, sessao);
					instanciou = true;
					break;
				}
			}

			if (instanciou == false) {
				obj = cls.newInstance();
			}

			Method metodoExecutar = null;
			Object[] parametros = null;

			Method[] methods = cls.getDeclaredMethods();

			for (int i = 0; i < methods.length; i++) {
				Method m = methods[i];

				Class[] paramTypes = m.getParameterTypes();
				String name = m.getName();

				if (name.equals("executar")) {
					parametros = new Object[paramTypes.length];
					for (int j = 0; j < paramTypes.length; j++) {
						parametros[j] = null;
					}

					metodoExecutar = m;

					break;
				}
			}

			// Method method = cls.getDeclaredMethod("executar", new Class[]
			// {});
			metodoExecutar.invoke(obj, parametros);
			return "";
		} catch (Exception e) {
			if (sessao != null && !classeRetorno.equals("")) {
				sessao.getSisgsisp().popNavega();
			}
			return e.getMessage();
		}
	}

	public Object retornarModulo(Result result, Sessao sessao) {
		// call the method
		boolean instanciou = false;
		String classe;
		classe = sessao.getSisgsisp().popNavega();
		try {

			Class<?> cls = Class.forName(classe);
			Constructor<?>[] constructors = cls.getConstructors();
			Object obj = null;
			for (Constructor<?> cons : constructors) {
				Class<?>[] parameterTypes = cons.getParameterTypes();

				if (parameterTypes.length == 2 && parameterTypes[0].toString().contains("br.com.caelum.vraptor.Result") && parameterTypes[1].toString().contains("br.com.vti.sisp.util.Sessao")) {

					Constructor<?> construtor = cls.getConstructor(parameterTypes);
					obj = (Object) construtor.newInstance(result, sessao);
					instanciou = true;
					break;
				}

			}

			if (instanciou == false) {
				obj = cls.newInstance();
			}

			Method metodoExecutar = null;
			Object[] parametros = null;

			Method[] methods = cls.getDeclaredMethods();

			for (int i = 0; i < methods.length; i++) {
				Method m = methods[i];

				Class[] paramTypes = m.getParameterTypes();
				String name = m.getName();

				if (name.equals("executar")) {
					parametros = new Object[paramTypes.length];
					for (int j = 0; j < paramTypes.length; j++) {
						parametros[j] = null;
					}

					metodoExecutar = m;

					break;
				}
			}

			// Method method = cls.getDeclaredMethod("executar", new Class[]
			// {});
			// method.invoke(obj);
			Object o = metodoExecutar.invoke(obj, parametros);
			return o;
		} catch (Exception e) {
		}
		return null;
	}

	/*
	 * public String executarModulo(String classe, String classeRetorno, Sessao sessao) { // call the method if (!classe.contains(".")) { classe = "br.com.vti.sisp.controller.programa." + classe; } if
	 * (!classeRetorno.contains(".")) { classeRetorno = "br.com.vti.sisp.controller.programa." + classeRetorno; } try { if (sessao != null && !classeRetorno.equals("")) {
	 * sessao.getSisgsisp().pushNavega(classeRetorno); } Class cls = Class.forName(classe); Object obj = cls.newInstance(); Method method = cls.getDeclaredMethod("executar", new Class[] {});
	 * method.invoke(obj); return ""; } catch (Exception e) { if (sessao != null && !classeRetorno.equals("")) { sessao.getSisgsisp().popNavega(); } return e.getMessage(); } }
	 * 
	 * public void retornarModulo(Sessao sessao) { // call the method String classe; classe = sessao.getSisgsisp().popNavega(); try { Class cls = Class.forName(classe); Method method =
	 * cls.getDeclaredMethod("executar", new Class[] {}); Object obj = cls.newInstance(); method.invoke(obj); } catch (Exception e) { } }
	 */
	public String sissm001(Result result, Sessao sessao) // xSUBROUTINE
	{
		return sissm001(result, sessao, "");
	}

	public String sissm001(Result result, Sessao sessao, String classeRetorno) // xSUBROUTINE
	{
		String volta = "";
		String classe = "";
		String[] trt = { null, "vei", "rch", "mul", "arr", "ipv", "rou", "pmm", "inf", "tab", "sen", "cri", "idc", "ren", "fun", "bat", "rch", "rfr", "  ", "  ", "ssp", "prf" };
		switch (sessao.getSisgsisp().getOperacao()) {
		case "SIS": {
			// REVER UtilBean.finalizar();
			break;
		}
		case "FIM": {
			// REVER x();
			break;
		}
		case "CAD": {
			volta = UtilBean.concatena(WordUtils.capitalize(trt[sessao.getSisgsisp().getVlt() - 1].trim().toLowerCase()), "pm001.executar()");
			// CHAMAR A CLASSE CORRESPONDENTE AO CONTEUDO DA VARIAVEL VOLTA
			break;
		}
		default: {
			while (vwDveope.pesquisaOperacao(sessao.getSisgsisp().getOperacao())) {
				if (vwDveope.getModdis(sessao.getSisgsisp().getVlt() - 1) == sessao.getSisgsisp().getVlt()) {
					// CHAMAR A CLASSE CORRESPONDENTE AO CONTEUDO DA VARIAVEL
					// vwDveope.getdiaopeProgra()
					classe = "br.com.vti.sisp.controller.programa." + WordUtils.capitalize(vwDveope.getPrograma().trim().toLowerCase());
					return executarModulo(classe, classeRetorno, result, sessao);
				}
			}
		}
		}
		return "";
	}

	public void tabsemi(Sessao sessao) // xSUBROUTINE
	{
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 0, 3, "N", "018");
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 3, 12, "N", sessao.getSisgsisp().getMatric());
		// Par�grafo: t1()
		while (vwTabele.consultaTabele(18, (long) sessao.getSisgsisp().getMatric())) {
			if (!vwTabele.getChaveAlfaAcesso().trim().equals(sessao.getSisgsisp().getSenha().trim())) {
				camret = "senha";
				msgret = "";
				return;
			}
			sislac01.niveis = vwTabele.getDescricaoElem();
			String nvl;
			nvl = UtilBean.subStr(sislac01.niveis, 30 + sessao.getSisgsisp().getVar() - 1, 1);
			if (!(nvl.equals("2") || nvl.equals("3") || nvl.equals("6") || nvl.equals("7"))) {
				camret = "senha";
				msgret = "*** USUARIO NAO AUTORIZADO PARA EMISSAO";
				return;
			}
		}
		vwTabele.fecha();
		if (vwTabele.registrosProcessados() == 0) {
			camret = "matric";
			msgret = "";
			return;
		}
	}

	public void estna001(int cpo, int esttip, long qde, int var, int matr) {

		String[] tabt = { null, "I", "A", "B", "E", "P", "N" };
		int i;
		String motida = "";
		String[] tabm = { null, "   ", "VEI", "CON", "MUL", "   ", "IPV", "ROU", "   ", "   ", "   ", "   ", "   ", "IDC", "ICR", "FUN", "   ", "   " };
		// UtilBean.moveSubstring(motida, 5, 8, "N", //
		// UtilBean.obtemDataCorrente());
		if (var == 0) {
			UtilBean.moveSubstring(motida, 0, 3, "X", tabm[var]);
		}

		// UtilBean.moveSubstring(motida, 3, 2, "N", esttip);
		// UtilBean.moveSubstring(motida, 13, 7, "N", matr);
		if (vwCadest.consultaMotida(tabm[var], esttip, UtilBean.obtemDataCorrente(), matr)) {
			vwCadest.setCodigoModelo(UtilBean.subStr(motida, 0, 3));
			vwCadest.setCodigoTipo(esttip);
			vwCadest.setDataAtualiz(UtilBean.obtemDataCorrente());
			vwCadest.setMatriculaFunc(matr);
			vwCadest.setHoraem(Integer.parseInt((new SimpleDateFormat("HHmmssS").format(Calendar.getInstance().getTime()))));
			vwCadest.setQuantTrans(cpo, qde);
		}
		if (vwCadest.registrosProcessados() == 0) {
			// mover();
			vwCadest.grava();
			// dao.commit();
		} else {
			// mover();
			vwCadest.atualiza();
			// dao.commit();
		}

		return;
	}

	public String sisnct01(int ttt, long ccc, String vta) {
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 0, 3, "N", ttt);
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 3, 14, "N", ccc);
		vwTabele.consultaTabele(ttt, ccc);
		vwTabele.fecha();
		if (vwTabele.registrosProcessados() == 0) {
			vta = "@";
		}
		return vta;
	}

	public String sisnct02(int ttt, String ccc, String vta) {
		vwTabele.pesq2 = UtilBean.moveSubstring(vwTabele.pesq2, 0, 3, "N", ttt);
		vwTabele.pesq2 = UtilBean.moveSubstring(vwTabele.pesq2, 3, 14, "N", ccc);
		vwTabele.consultaTabcha(ttt, ccc);
		vwTabele.fecha();
		if (vwTabele.registrosProcessados() == 0) {
			vta = "@";
		}
		return vta;
	}

	public int idcndig(int cpon) {
		String cpo;
		int dv1;
		long soma;
		int resto;
		int i;
		int j;
		cpo = String.valueOf(cpon);
		while (cpo.length() < 11)
			cpo = "0" + cpo;
		soma = 0;
		dv1 = 0;
		j = 1;
		for (i = 9; i >= 0; i--) {
			j += 1;
			if (j > 9) {
				j = 2;
			}
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		// DIVIDE soma = soma / 11 -- <<NULL>> resto
		resto = (int) (soma % 11);
		if (resto == 1 || resto == 0) {
			dv1 = 0;
		} else {
			dv1 = 11 - resto;
		}
		return dv1;
	}

	public int idcdig1(long cpon) {
		String cpo;
		int dv1;
		long soma = 0;
		int resto;
		int i;
		int j = 1;
		cpo = String.valueOf(cpon);
		while (cpo.length() < 11)
			cpo = "0" + cpo;
		for (i = 9; i >= 0; i += -1) {
			j += 1;
			if (j > 9) {
				j = 1;
			}
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		resto = (int) (soma % 11);
		if (resto == 1 || resto == 0) {
			dv1 = 0;
		} else {
			dv1 = 11 - resto;
		}
		return dv1;
	}

	public int idcndig1(int cpon) {
		String cpo;
		int dv1;
		long soma;
		int resto;
		int i;
		int j;
		cpo = String.valueOf(cpon);
		while (cpo.length() < 11)
			cpo = "0" + cpo;
		soma = 0;
		dv1 = 0;
		j = 1;
		for (i = 9; i >= 0; i--) {
			j += 1;
			if (j > 9) {
				j = 2;
			}
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		// DIVIDE soma = soma / 11 -- <<NULL>> resto
		resto = (int) (soma % 11);
		if (resto == 1 || resto == 0) {
			dv1 = 0;
		} else {
			dv1 = 11 - resto;
		}
		return dv1;
	}

	public int idcndig2(long cpon) {
		String cpo;
		int dv1;
		long soma;
		int resto;
		int i;
		int j;
		cpo = String.valueOf(cpon);
		while (cpo.length() < 11)
			cpo = "0" + cpo;
		soma = 0;
		dv1 = 0;
		j = 1;
		for (i = 9; i >= 0; i--) {
			j += 1;
			if (j > 9) {
				j = 2;
			}
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		resto = (int) (soma % 11);
		if (resto == 1 || resto == 0) {
			dv1 = 0;
		} else {
			dv1 = 11 - resto;
		}
		return dv1;
	}

	public int idcndiga(int cpon) {
		String cpo;
		int dv1;
		long soma;
		int resto;
		int i;
		int j;
		cpo = String.valueOf(cpon);
		while (cpo.length() < 11)
			cpo = "0" + cpo;
		soma = 0;
		dv1 = 0;
		j = 1;
		for (i = 9; i >= 0; i--) {
			j += 1;
			if (j > 9) {
				j = 1;
			}
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		resto = (int) (soma % 11);
		if (resto == 1 || resto == 0) {
			dv1 = 0;
		} else {
			dv1 = 11 - resto;
		}
		return dv1;
	}

	public void recupdel() {
		// Par�grafo: fd33()
		while (criminalView.pesquisaRegEstadualGeral(37199L)) {
			criminalView.setStatusReg(0);
			criminalView.setTipoReg("AL");
			criminalView.atualiza();
			// dao.commit();
		}
		criminalView.fecha();
	}

	public void scrsfdat(String[][] totded) throws Exception // xSUBROUTINE
	{
		String dedo;
		int test = 0;
		int t2 = 0;
		int t3 = 0;
		int i = 0;
		int j = 0;
		int al = 7;
		int t955 = 0;
		al = 6;
		for (i = 1; i <= 2; i++) {
			for (j = 1; j <= 5; j++) {
				dedo = totded[j][i];
				al += 1;
				if (!(UtilBean.subStr(dedo, 0, 1).equals("0") || UtilBean.subStr(dedo, 0, 1).equals("Y") || UtilBean.subStr(dedo, 0, 1).equals(" ") || UtilBean.subStr(dedo, 0, 1).equals("1") || UtilBean.subStr(dedo, 0, 1).equals("2") || UtilBean.subStr(dedo, 0, 1).equals("3") || UtilBean.subStr(dedo, 0, 1).equals("4") || UtilBean.subStr(dedo, 0, 1).equals("5") || UtilBean.subStr(dedo, 0, 1).equals("6") || UtilBean.subStr(dedo, 0, 1).equals("7"))) {
					camret = "dedos[" + j + "][" + i + "]";
					msgret = "CLASSIFICACAO PRIMARIA INVALIDA";
					return;
				}
				switch (UtilBean.subStr(dedo, 0, 1)) {
				case "Y":
				case "1":
				case "2":
				case "3":
				case "4":
				case "5":
				case "6":
				case "7": {
					if (!UtilBean.subStr(dedo, 1, 6).equals("      ")) {
						camret = "dedos[" + j + "][" + i + "]";
						msgret = "NAO SE CLASSIFICA IMPRESSOES TEMPORARIAS";
						return;
					}
					break;
				}
				case "0": {
					if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 1, 1), "1-9")) {
						camret = "dedos[" + j + "][" + i + "]";
						msgret = "CLASSIFICACAO PRIMARIA INVALIDA";
						return;
					}
					if (!UtilBean.subStr(dedo, 2, 5).equals("     ")) {
						camret = "dedos[" + j + "][" + i + "]";
						msgret = "NAO SUBCLASSIFICA ANOMALIAS";
						return;
					}
					break;
				}
				case " ": {
					if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 1, 1), "1-8")) {
						camret = "dedos[" + j + "][" + i + "]";
						msgret = "CLASSIFICACAO PRIMARIA INVALIDA";
						return;
					}
					switch (UtilBean.subStr(dedo, 1, 1)) {
					case "1": {
						if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 2, 1), "1-9")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "SUBCLASSIFICACAO MORFOLOGICA NAO PODERA SER BRANCO";
							return;
						}
						if (!UtilBean.subStr(dedo, 3, 4).equals("    ")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "SUBCLASSIFICACAO DO ARCO LIMITA-SE A MORFOLOGIA";
							return;
						}
						break;
					}
					case "2":
					case "3": {
						if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 2, 1), "1-4")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "SUBCLASSIFICACAO MORFOLOGICA NAO PODERA SER BRANCO";
							return;
						}
						if (UtilBean.subStr(dedo, 3, 1).equals(" ")) {
							if (!(UtilBean.subStr(dedo, 4, 1).equals("P") || UtilBean.subStr(dedo, 4, 1).equals("I") || UtilBean.subStr(dedo, 4, 1).equals("A") || UtilBean.subStr(dedo, 4, 1).equals("B") || UtilBean.subStr(dedo, 4, 1).equals("T")) && j == 1) {
								camret = "dedos[" + j + "][" + i + "]";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA(2,3)";
								return;
							} else {
								if (!UtilBean.subStr(dedo, 4, 1).equals(" ") && j == 1) {
									test += 1;
								}
							}
							if (!(UtilBean.subStr(dedo, 4, 1).equals("P") || UtilBean.subStr(dedo, 4, 1).equals("I") || UtilBean.subStr(dedo, 4, 1).equals("A") || UtilBean.subStr(dedo, 4, 1).equals("B") || UtilBean.subStr(dedo, 4, 1).equals("T") || UtilBean.subStr(dedo, 4, 1).equals(" ")) && j > 1) {
								camret = "dedos[" + j + "][" + i + "]";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA(2,3)";
								return;
							}
						} else {
							if (!(UtilBean.subStr(dedo, 3, 1).equals("B") || UtilBean.subStr(dedo, 3, 1).equals("P") || UtilBean.subStr(dedo, 3, 1).equals("A")) && j == 1) {
								camret = "dedos[" + j + "][" + i + "]";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA(2,3)";
								return;
							}
							if (!(UtilBean.subStr(dedo, 3, 1).equals("B") || UtilBean.subStr(dedo, 3, 1).equals("P") || UtilBean.subStr(dedo, 3, 1).equals("A") || UtilBean.subStr(dedo, 3, 1).equals(" ")) && j > 1) {
								camret = "dedos[" + j + "][" + i + "]";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA(2,3)";
								return;
							}
							if (UtilBean.subStr(dedo, 3, 1).equals("B") && !UtilBean.subStr(dedo, 4, 1).equals("I")) {
								camret = "dedos[" + j + "][" + i + "]";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA(2,3)";
								return;
							}
							if (UtilBean.subStr(dedo, 3, 1).equals("P") && !UtilBean.subStr(dedo, 4, 1).equals("A")) {
								camret = "dedos[" + j + "][" + i + "]";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA(2,3)";
								return;
							}
							if (UtilBean.subStr(dedo, 3, 1).equals("A") && !UtilBean.subStr(dedo, 4, 1).equals("B")) {
								camret = "dedos[" + j + "][" + i + "]";
								msgret = "ERRO DE SUBCLASSIFICACAO DO TIPO DELTA(2,3)";
								return;
							}
						}
						if (j == 1) {
							if (!UtilBean.subStr(dedo, 5, 1).equals(" ")) {
								if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 5, 1), "1-5")) {
									camret = "dedos[" + j + "][" + i + "]";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
								if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 6, 1), "0 - 9")) {
									camret = "dedos[" + j + "][" + i + "]";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
								if (UtilBean.subStr(dedo, 5, 1).equals("5") && !UtilBean.subStr(dedo, 6, 1).equals("0")) {
									camret = "dedos[" + j + "][" + i + "]";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
							} else {
								if (!UtilBean.subStr(dedo, 6, 1).equals(" ") && !UtilBean.validarMascara(UtilBean.subStr(dedo, 6, 1), "1-9")) {
									camret = "dedos[" + j + "][" + i + "]";
									msgret = "ERRO CONTAGEM DE LINHA - POSICAO 6,7";
									return;
								}
							}
						} else {
							if (!UtilBean.subStr(dedo, 5, 1).equals(" ")) {
								if (!UtilBean.subStr(dedo, 5, 1).equals("G")) {
									camret = "dedos[" + j + "][" + i + "]";
									msgret = "ERRO DE GRUPO - POSICAO 6,7";
									return;
								}
								if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 6, 1), "1-6")) {
									camret = "dedos[" + j + "][" + i + "]";
									msgret = "ERRO DE GRUPO - POSICAO 6,7";
									return;
								}
							}
						}
						break;
					}
					case "4": {
						if (!UtilBean.validarMascara(UtilBean.subStr(dedo, 2, 1), "1-9")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "SUBCLASSIFICACAO MORFOLOGICA NAO PODERA SER EM BRANCO";
							return;
						}
						if (!UtilBean.subStr(dedo, 3, 1).equals(" ")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "ERRO DE SUBCLASSIFICACAO DA POSICAO DO DELTA 4";
							return;
						}
						if (!(UtilBean.subStr(dedo, 4, 1).equals("C") || UtilBean.subStr(dedo, 4, 1).equals("D") || UtilBean.subStr(dedo, 4, 1).equals("E"))) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "ERRO DE SUBCLASSIFICACAO DA POSICAO DO DELTA 4";
							return;
						}
						if (!UtilBean.subStr(dedo, 5, 1).equals(" ")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "POSICAO INVALIDA - 6";
							return;
						}
						if (!UtilBean.subStr(dedo, 6, 1).equals(" ")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "POSICAO INVALIDA - 7";
							return;
						}
						break;
					}
					case "5":
					case "6":
					case "7":
					case "8": {
						if (!UtilBean.subStr(dedo, 2, 5).equals("     ")) {
							camret = "dedos[" + j + "][" + i + "]";
							msgret = "ANOMALO/CICATRIZ/AMPUTACAO NAO POSSUEM SUBCLASSIFICACAO";
							return;
						}
						break;
					}
					default: {
						continue;
					}
					}
					break;
				}
				default: {
					continue;
				}
				}
			}
		}
		al = 7;
		dedo = totded[1][1];
		if (!UtilBean.subStr(dedo, 4, 1).equals(" ")) {
			t955 = 11;
		}
		dedo = totded[1][2];
		if (!UtilBean.subStr(dedo, 4, 1).equals(" ")) {
			t955 = 11;
		}
		for (i = 1; i <= 2; i++) {
			for (j = 2; j <= 5; j++) {
				dedo = totded[j][i];
				al += 1;
				if (!UtilBean.subStr(dedo, 4, 1).equals(" ") && test == 2) {
					if (!UtilBean.subStr(dedo, 1, 1).equals("4")) {
						camret = "dedos[" + j + "][" + i + "]";
						msgret = "JA EXISTE INFORMACAO NA POSICAO 5";
						return;
					}
				}
				if (UtilBean.subStr(dedo, 1, 1).equals("4")) {
					test = 1;
					break;
				}
				if (UtilBean.subStr(dedo, 1, 1).equals("2") || UtilBean.subStr(dedo, 1, 1).equals("3") && UtilBean.subStr(dedo, 2, 1).equals("4")) {
					if (UtilBean.subStr(dedo, 4, 1).equals(" ")) {
						if (j == 1) {
							t955 += 1;
						}
					} else {
						t955 = 11;
					}
				}
				if (!UtilBean.subStr(dedo, 4, 1).equals(" ")) {
					t2 += 1;
				}
				if (!UtilBean.subStr(dedo, 0, 1).equals(" ") || (UtilBean.subStr(dedo, 0, 1).equals(" ") && UtilBean.subStr(dedo, 4, 1).equals(" ") && !UtilBean.subStr(dedo, 1, 1).equals(" "))) {
					t3 += 1;
				}
			}
		}
		al = 7;
		if (t955 > 0 && t955 < 11) {
			camret = "dedos[" + j + "][" + i + "]";
			msgret = "NAO EXISTE INFORMACAO NA POSICAO 5";
			return;
		}
		if (test == 0 && t3 != 8) {
			if (t2 > 1) {
				camret = "dedos[" + j + "][" + i + "]";
				msgret = "EXISTE INFORMACAO A MAIS NA POSICAO 5";
				return;
			}
		}
	}

	public void scrsvnom(String wAl, String wVariavel_nome) // xSUBROUTINE
	{
		String wNome;
		int wI;
		int wJ = 0;
		camret = "";
		msgret = "";
		wNome = wVariavel_nome;
		for (wI = 0; wI < 60; wI++) {
			if (UtilBean.subStr(wNome, wI, 1).trim().equals("")) {
				if (wI == 0) {
					camret = wAl;
					msgret = "Nome invalido - 1a. Posicao deve ser preenchida";
					return;
				}
				if (wI < 2) {
					camret = wAl;
					msgret = "Nome invalido - pre-nome so� ocupa 1 posicao";
					return;
				}
				if (wI < 57 && UtilBean.subStr(wNome, wI + 1, 1).trim().equals("")) {
					if (!UtilBean.subStr(wNome, wI + 2, 1).trim().equals("")) {
						camret = wAl;
						msgret = "Nao pode haver 2 espacos entre os nomes";
						return;
					}
				}
			}
		}
		for (wI = 0; wI < 60; wI++) {
			if (UtilBean.subStr(wNome, wI, 1).trim().equals("")) {
				wJ += 1;
				if (UtilBean.subStr(wNome, wI + 1, 1).trim().equals("")) {
					break;
				}
			}
		}
		if (wJ == 1) {
			camret = wAl;
			msgret = "Nome invalido - falta sobrenome";
			return;
		}

	}

	public int[][] sisnc001() {
		int fev;
		int ind1;
		int ind2;
		int dia;
		int diaAtual;
		int wano, wmes, wdia;
		String diaE;
		String mesE;
		String dd;
		Integer[] tab2 = { null, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
		Integer[] tab4 = { null, 000, 031, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
		int data;
		String gTb1;
		String gTb3;
		int gTb4;
		int i3;
		int ano;
		int var1;
		int calc;
		int r1;
		int r2;
		int r3;
		int r4;
		String dataD;
		// *LANGUAGE = 38;
		data = UtilBean.obtemDataCorrente();
		wano = (int) UtilBean.extraiDigitos(data, 8, 0, 4);
		wmes = (int) UtilBean.extraiDigitos(data, 8, 4, 2);
		wdia = (int) UtilBean.extraiDigitos(data, 8, 6, 2);

		dataD = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
		mesE = new SimpleDateFormat("MMMM").format(Calendar.getInstance().getTime());
		diaE = new SimpleDateFormat("EEEEEE").format(Calendar.getInstance().getTime());
		dd = String.valueOf(wdia);
		dataL = UtilBean.concatena(dd, ", ", diaE, ", ", mesE, ", ", wano);
		diaAtual = wdia;
		data = wano * 10000 + wmes * 100 + 1;
		fev = wano;
		// DIVIDE fev = fev / 4 -- <<NULL>> r4
		r4 = fev % 4;
		if (r4 == 0) {
			tab2[2] = 29;
		}
		ano = wano;
		// DIVIDE wano = wano / 4 -- <<NULL>> r1
		r1 = wano % 4;
		r2 = wano % 100;
		r3 = wano % 400;
		for (int i1 = 1; i1 <= 0; i1++) {
			for (int i2 = 1; i2 <= 0; i1++) {
				// c0 [i1][i2] = "";
			}
		}
		if (wmes > 2 && r1 == 0 && (r2 > 0 || r3 == 0)) {
			var1 = 1;
		} else {
			var1 = 0;
		}
		gTb4 = tab4[wmes];
		calc = (((wano - 1) / 4) + ((wano - 1) * 365) + gTb4 + wdia - 1 + var1);
		// DIVIDE calc = calc / 7 -- <<NULL>> i3
		i3 = calc % 7;
		i3 += 1;

		Calendar calendario = new GregorianCalendar(wano, wmes - 1, 1);
		i3 = calendario.get(Calendar.DAY_OF_WEEK);

		dia = 0; //
		for (ind1 = 1; ind1 <= 6; ind1++) {
			for (ind2 = i3; ind2 <= 7; ind2++) {
				dia += 1;
				if (dia > tab2[wmes]) {
					break;
				} else {
					mes[ind1][ind2] = dia;
				}
				if (dia == diaAtual) {
					//
				}
			}
			i3 = 1;
		}
		return mes;
	}

	public void sisncgc(int cpon) {
		String cpo;
		int resto;
		long soma = 0;
		int i;
		int j;
		cpo = String.valueOf(cpon);
		while (cpo.length() < 12)
			cpo = "0" + cpo;
		j = 1;
		for (i = cpo.length() - 1; i >= 0; i += -1) {
			j += 1;
			if (j > 9) {
				j = 2;
			}
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		resto = (int) (soma % 11);
		j = 1;
		if (!(resto == 0 || resto == 1)) {
			dv1 = 11 - resto;
		}

		cpon = cpon * 10 + dv1; // rever
		cpo = String.valueOf(cpon); // rever

		while (cpo.length() <= 12)
			cpo = "0" + cpo;
		for (i = cpo.length() - 1; i >= 0; i += -1) {
			j += 1;
			if (j > 9) {
				j = 2;
			}
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		resto = (int) (soma % 11);
		if (!(resto == 0 || resto == 1)) {
			dv2 = 11 - resto;
		}
		return;
	}

	public void sisncpf(long cpon) {
		String cpo;
		long soma = 0;
		int resto;
		int i;
		int j;
		j = 1;
		cpo = String.valueOf(cpon);
		while (cpo.length() <= 8)
			cpo = "0" + cpo;
		j = 1;
		for (i = cpo.length() - 1; i >= 0; i += -1) {
			j += 1;
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		resto = (int) (soma % 11);
		soma = 0;
		dv2 = 0;
		j = 1;
		if (resto == 1 || resto == 0) {
			dv1 = 0;
		} else {
			dv1 = 11 - resto;
		}

		cpon = cpon * 10 + dv1; // tomiyama
		cpo = String.valueOf(cpon);
		while (cpo.length() <= 9)
			cpo = "0" + cpo;
		for (i = cpo.length() - 1; i >= 0; i += -1) {
			j += 1;
			soma = Integer.parseInt(UtilBean.subStr(cpo, i, 1)) * j + soma;
		}
		resto = (int) (soma % 11);
		if (resto == 1 || resto == 0) {
			dv2 = 0;
		} else {
			dv2 = 11 - resto;
		}
		return;
	}

	public void sissanom(String nomep) // xSUBROUTINE
	{
		String nome;
		int i;
		int j;
		j = 0;
		camret = "";
		msgret = "";
		nome = nomep;
		for (i = 0; i < 60; i++) {
			if (UtilBean.subStr(nome, i, 1).trim().equals("")) {
				if (i == 0) {
					camret = "al";
					msgret = "NOME INVALIDO - 1. POSICAO NAO PODE SER BRANCO";
					return;
				}
				if (i < 2) {
					camret = "al";
					msgret = "NOME INVALIDO - PRE-NOME SO OCUPA 1 POSICAO";
					return;
				}
				if (i < 57 && UtilBean.subStr(nome, i + 1, 1).trim().equals("")) {
					if (!UtilBean.subStr(nome, i + 2, 1).trim().equals("")) {
						camret = "al";
						msgret = "NAO PODE HAVER 2 ESPACOS ENTRE O NOME";
						return;
					}
				}
			}
		}
		for (i = 0; i < 60; i++) {
			if (UtilBean.subStr(nome, i, 1).trim().equals("")) {
				j += 1;
				if (UtilBean.subStr(nome, i + 1, 1).trim().equals("")) {
					break;
				}
			}
		}
		if (j == 1) {
			camret = "al";
			msgret = "NOME INVALIDO - FALTA SOBRENOME";
			return;
		}
	}

	public long sissd001(int data1) throws Exception // xSUBROUTINE
	{
		String dataD;
		String dataA;
		dataA = UtilBean.subStr(String.valueOf(data1), 0, 6);
		if (UtilBean.validarMascara(dataA, "ddMMyy")) {
			dataD = dataA;
			dataA = new SimpleDateFormat("yyMMdd").format(dataD);
		} else {
			if (UtilBean.validarMascara(dataA, "yyMMdd")) {
				dataD = dataA;
				dataA = new SimpleDateFormat("ddMMyy").format(dataD);
			}
		}
		data1 = Integer.parseInt(dataA);
		return data1;
	}

	public long sissd002(long data1) throws Exception {
		String dataD;
		String dataA;
		if ((data1 != 19620229) && (data1 != 19650229)) {
			dataA = String.valueOf(data1);
			if (UtilBean.validarMascara(dataA, "yyyyMMdd")) {
				dataD = dataA;
				dataA = new SimpleDateFormat("ddMMyyyy").format(toDate(dataD, "yyyyMMdd"));
			} else {
				if (UtilBean.validarMascara(dataA, "ddMMyyyy")) {
					dataD = dataA;
					dataA = new SimpleDateFormat("yyyyMMdd").format(toDate(dataD, "ddMMyyyy"));
				}
			}
			data1 = Integer.parseInt(dataA);
		} else {
			dataA = "29021962";
			data1 = 29021962;
		}
		return data1;
	}

	public String sisst002(int arg1, long arg2, String cal) {
		if (vwTabele.consultaTabele(arg1, arg2)) {
			cal = vwTabele.getChaveAlfaAcesso();
		} else {
			cal = "##############";
		}
		vwTabele.fecha();
		return cal;
	}

	public void tabssup2(Sessao sessao) {
		camret = "";
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 0, 3, "N", 18);
		vwTabele.pesq = UtilBean.moveSubstring(vwTabele.pesq, 3, 12, "N", sessao.getSisgsisp().getMatric());
		// Par�grafo: i01()
		vwTabele.consultaTabele(18, (long) sessao.getSisgsisp().getMatric());
		if (!vwTabele.getChaveAlfaAcesso().equals(sessao.getSisgsisp().getSenha())) {
			camret = "senha";
			msgret = "";
			return;
		}
		sislac01.niveis = vwTabele.getDescricaoElem();
		subniv = UtilBean.subStr(sislac01.niveis, 30 + sessao.getSisgsisp().getVar(), 1);
		if (!(subniv.equals("4") || subniv.equals("5") || subniv.equals("6") || subniv.equals("7"))) {
			camret = "senha";
			msgret = "";
			return;
		}
		subniv = UtilBean.subStr(sislac01.niveis, 30 + 16, 1);
		if (!(subniv.equals("4") || subniv.equals("5") || subniv.equals("6") || subniv.equals("7"))) {
			camret = "senha";
			msgret = "ATUALIZACAO SO PERMITIDA AO SUPERVISOR";
			return;
		}
		vwTabele.fecha();
		if (vwTabele.registrosProcessados() == 0) {
			camret = "matric";
			msgret = "";
			return;
		}
	}

	public void validnom(String nome) throws Exception {
		int i;
		// int j;
		int k;
		int l;
		String testaSobrenome = "V";
		if (nome.trim().equals("")) {
			err = 1;
			posicao = 0;
			return;
		}
		err = 0;
		posicao = 0;
		for (i = 1; i <= 70; i++) {
			if (!UtilBean.validarMascara(UtilBean.subStr(nome, i, 1), "A")) {
				if (i == 1) {
					if (!UtilBean.validarMascara(UtilBean.subStr(nome, i, 1), "A")) {
						err = 2;
						posicao = i;
						return;
					}
				}
				if (UtilBean.subStr(nome, i, 1).equals("-") || UtilBean.subStr(nome, i, 1).equals("")) {
					if (!UtilBean.validarMascara(UtilBean.subStr(nome, i - 1, 1), "A") || !UtilBean.validarMascara(UtilBean.subStr(nome, i + 1, 1), "A")) {
						err = 4;
						posicao = i;
						return;
					}
				}
				if (UtilBean.subStr(nome, i, 1).equals(".")) {
					k = 70 - i;
					l = i + 1;
					if (UtilBean.subStr(nome, l, k).trim().equals("")) {
						err = 8;
						posicao = i;
						return;
					}
					if (UtilBean.subStr(nome, i - 1, 1).trim().equals("") || !UtilBean.subStr(nome, i + 1, 1).trim().equals("")) {
						err = 5;
						posicao = i;
						return;
					}
				}
				if (UtilBean.subStr(nome, i, 1).trim().equals("")) {
					k = 70 - i + 1;
					if (UtilBean.subStr(nome, i, k).trim().equals("")) {
						if (testaSobrenome.equals("V")) {
							err = 7;
							posicao = i;
							return;
						} else {
							err = 0;
							posicao = 0;
							return;
						}
					}
					if (UtilBean.subStr(nome, i + 1, 1).trim().equals("")) {
						err = 6;
						posicao = i;
						return;
					}
					testaSobrenome = "F";
				}
				if (!UtilBean.subStr(nome, i, 1).trim().equals("") && !UtilBean.subStr(nome, i, 1).equals(".") && !UtilBean.subStr(nome, i, 1).equals("-") && !UtilBean.subStr(nome, i, 1).equals("")) {
					err = 3;
					posicao = i;
					return;
				}
			}
		}
		if (testaSobrenome.equals("V")) {
			err = 7;
			posicao = i;
		}
	}

	public static Date toDate(String data, String formato) {
		DateFormat x = new SimpleDateFormat(formato);
		Date dt = null;

		try {
			dt = x.parse(data);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return dt;
	}

	// Escopo - Foi criado para os erros de compila��o 'PHONET'
	public String phonNome;
	public String phonArea;
	public String phonCod;
	public String[] phonComb = new String[200];

	// Escopo - Foi criado para os erros de compila��o 'PHONET'
	public void phonet(String param) {
		phonNome = "";
		phonArea = "";
		phonCod = "";
		Arrays.fill(phonComb, "");
	}

	// Escopo - Foi criado para os erros de compila��o 'SCRPBATH'
	public void scrpbath() {

	}
}
